home *** CD-ROM | disk | FTP | other *** search
- #! /bin/bash
- # Script from Frans Pop
-
- set -e
-
- if [ -z "$1" ]; then
- echo "Usage: insserv-seq-changes /var/lib/insserv/<old bootscripts tarball>"
- exit 1
- fi
-
- oldtar="$(tar tzf $1)"
- for i in S $(seq 0 6); do
- echo "Runlevel $i"
- new="$(cd /etc/rc$i.d; ls -1 [KS]* | sort | nl)"
- old="$(echo "$oldtar" | grep "^rc$i.d/[KS]" | cut -d/ -f2 | sort | nl)"
- case $i in
- S|0|6)
- old="$(echo "$old" | sed -r "s/[KS][0-9]+//")"
- new="$(echo "$new" | sed -r "s/[KS][0-9]+//")"
- ;;
- *)
- old="$(echo "$old" | sed -r "s/([KS])[0-9]+/\1_/")"
- new="$(echo "$new" | sed -r "s/([KS])[0-9]+/\1_/")"
- ;;
- esac
- echo "$new" | while read num cmd; do
- oldnum=$(echo "$old" | grep "[[:space:]]$cmd$" | awk '{print $1}')
- if [ "$oldnum" ]; then
- diff=$(($num - $oldnum))
- else
- oldnum="---"
- diff=""
- fi
- if [ ${#cmd} -ge 16 ]; then
- echo -e "$cmd\t$num\t$oldnum\t$diff"
- elif [ ${#cmd} -ge 8 ]; then
- echo -e "$cmd\t\t$num\t$oldnum\t$diff"
- else
- echo -e "$cmd\t\t\t$num\t$oldnum\t$diff"
- fi
- done
- echo "$old" | while read num cmd; do
- if ! echo "$new" | grep -q "[[:space:]]$cmd$"; then
- if [ ${#cmd} -ge 16 ]; then
- echo -e "$cmd\t---\t$oldnum"
- elif [ ${#cmd} -ge 8 ]; then
- echo -e "$cmd\t\t---\t$oldnum"
- else
- echo -e "$cmd\t\t\t---\t$oldnum"
- fi
- fi
- done
- echo
- done
-